﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace dotUML.Core.Common.SequenceDiagram
{
    /// <summary>
    /// Defines UML sequence diagram lifeline types.
    /// </summary>
    public enum ELifelineType
    {
        /// <summary>
        /// Normal lifeline.
        /// </summary>
        Normal,
        /// <summary>
        /// Actor lifeline.
        /// </summary>
        Actor,
    }

    /// <summary>
    /// Defines UML sequence diagram message types.
    /// </summary>
    public enum EMessageType
    {
        /// <summary>
        /// Call message: an ordinary method call.
        /// </summary>
        Call,
        /// <summary>
        /// Return message: result of a method call.
        /// </summary>
        Return,
        /// <summary>
        /// Self message: a message to itself.
        /// </summary>
        Self,
        /// <summary>
        /// Recursive message: recursively call a method.
        /// </summary>
        Recursive,
        /// <summary>
        /// Duration message: a message has duration.
        /// </summary>
        Duration,
        /// <summary>
        /// Create message: a message creates a lifeline.
        /// </summary>
        Create,
        /// <summary>
        /// Found message: the sender of the message is unknown.
        /// </summary>
        Found,
        /// <summary>
        /// Lost message: the receiver of the message is unknown.
        /// </summary>
        Lost,
    }

    /// <summary>
    /// Defines UML sequence diagram constraint types.
    /// </summary>
    public enum EConstraintType
    {
        /// <summary>
        /// Duration constraint.
        /// </summary>
        Duration,
        /// <summary>
        /// Time constraint.
        /// </summary>
        Time,
    }

    /// <summary>
    /// Defines UML sequence diagram combined fragment types.
    /// </summary>
    public enum ECombinedFragmentType
    {
        /// <summary>
        /// Alt combined fragment: defines a choice of an alternative.
        /// </summary>
        Alt,
        /// <summary>
        /// Loop combined fragment: defines a cycle.
        /// </summary>
        Loop,
    }
}
